1. Field of the Invention
The invention relates generally to error correction systems and, more particularly, to systems for error and erasure detection and correction.
2. Background Information
Before data is transmitted over a communications channel to a receiver or a data storage device, the data is typically encoded to allow for error detection and/or correction. The error correction/detection encoding may manipulate the data in accordance with a distance “d” error correction code (“ECC”), to produce ECC codewords that include the data and associated redundancy information. To decode the data and associated redundancy information from received or retrieved signals, the decoder first recovers the bits and then may group the bits into symbols or sequences of appropriate length for the ECC, and thus, reproduces the ECC codewords. The system next decodes the ECC codewords using the ECC to produce, if possible, error-free data. Typically, an (n, k) distance d Reed-Solomon ECC is used to encode data that is to be stored for later retrieval, and the ECC decoder is an on-the-fly hardware decoder that detects and corrects up to “t” errors using 2t=n−k redundancy symbols, where the minimum distance is dmin=2t+1. Also, Reed-Solomon ECC may correct up to ρ=dmin−1 erasures, or simultaneously a random errors and ρ erasures, provided that 2α+ρ<dmin (as will be understood by those skilled in the art). Other examples of on-the-fly hardware decoders include, e.g., parity check decoders, media noise optimized Viterbi detectors, etc., as will be understood by those skilled in the art.
When a sector of a storage medium is “marginal,” such that retrieval of the data stored therein is impaired by, for example, a defect in the medium or a degradation of the signal that represents the data, the system may determine that the stored data contains more errors than the ECC can correct. The system then tries to recover the data through error recovery operations. Generally, the error recovery operations involve up to a predetermined number of re-reads (“retries”) of the data, in which the error correction operations are performed independently for the respective re-reads. Often, the number of retries is limited by a specified “time-out” length of time. For example, the error recovery operations may spend up to several hundred retries attempting to recover the data.
The error recovery operations may include re-reading the data (e.g., from a disk) with a read head at various off-track positions, with an increased bias current, using modified filter responses, and so forth, to improve the quality of the read-back signal. However, such attempts may not recover the data or offer a sufficient improvement such that the number of errors included therein is within the error correction capability of the ECC.
There remains a need, therefore, for a technique that efficiently retries the reading of erroneous data that is originally beyond the correction capability of the ECC, in order to supply more useful information to the ECC.